package com.szit.test.dao;

import com.szit.test.entity.PageIndexer;
import com.szit.test.entity.Sale;

import java.util.List;

/**
 * 教师数据访问层接口
 *
 * @author 勇哥
 * @version 1.0 2025-05-15
 */
public interface SaleDao {
    /**
     * 添加教师信息
     *
     * @param t 教师实体对象
     * @return 返回是否添加成功
     */
    boolean addTeacher(Sale t);

    /**
     * 修改教师信息
     *
     * @param t 教师实体对象
     * @return 返回是否修改成功
     */
    boolean updateTeacher(Sale t);

    /**
     * 删除教师信息
     *
     * @param id 教师编号
     * @return 返回是否删除成功
     */
    boolean deleteTeacher(int id);

    /**
     * 查询所有教师信息
     *
     * @return 返回教师实体集合
     */
    List<Sale> getAllTeachers();

    /**
     * 通过教师编号查询教师信息
     *
     * @param id 教师编号
     * @return 返回教师实体
     */
    Sale getTeacherById(int id);

    /**
     * 分页显示教师信息
     *
     * @param page 分页实体对象
     * @return 返回教师实体集合
     */
    List<Sale> getTeachersByPage(PageIndexer page);


    /**
     * 根据多条件查询教师信息
     *
     * @param teacher 教师实体：包含教师编号和姓名
     * @param sex 性别
     * @return 返回教师实体集合
     */
    List<Sale> getTeachersByIf(Sale teacher, String sex);

    /**
     * 根据多条件查询教师信息进行分页
     *
     * @param teacher 教师实体：包含教师编号和姓名
     * @param sex 性别
     * @param page 分页实体对象
     * @return 返回教师实体集合
     */
    List<Sale> getTeachersByPage(Sale teacher, String sex, PageIndexer page);


    /**
     * 根据多条件查询教师信息，获取总页数
     *
     * @param teacher 教师实体：包含教师编号和姓名
     * @param sex 性别
     * @return 返回教师总记录数
     */
    int getTeachersCountByIf(Sale teacher, String sex);
}
